home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C128 / Monthly Disks / (y)aca.d64 / hack1.sfx / hacking1.3-3 < prev   
Text File  |  1990-02-12  |  9KB  |  212 lines

  1. .$1432  [A9 00   ]  LDA #$00      ;SET THE NUMERATOR FRACTIONAL PORTION TO .0
  2. .$1434  [85 60   ]  STA $60
  3. .$1436  [85 61   ]  STA $61
  4. .$1438  [20 CF 13]  JSR $13CF     ;32-BIT DIVIDE
  5. .$143B  [68      ]  PLA           ;IF THE SIGN OF THE RESULT IS SUPPOSED TO BE
  6. .$143C  [10 19   ]  BPL $1457     ;  POSITIVE, THEN EXIT
  7. .$143E  [38      ]  SEC           ;IF THE SIGN OF THE RESULT IS NEGATIVE, TAKE
  8. .$143F  [A9 00   ]  LDA #$00      ;  GET THE 2'S COMPLEMENT OF THE POSITIVE
  9. .$1441  [E5 64   ]  SBC $64       ;  RESULT
  10. .$1443  [85 64   ]  STA $64
  11. .$1445  [A9 00   ]  LDA #$00
  12. .$1447  [E5 65   ]  SBC $65
  13. .$1449  [85 65   ]  STA $65
  14. .$144B  [A9 00   ]  LDA #$00
  15. .$144D  [E5 66   ]  SBC $66
  16. .$144F  [85 66   ]  STA $66
  17. .$1451  [A9 00   ]  LDA #$00
  18. .$1453  [E5 67   ]  SBC $67
  19. .$1455  [85 67   ]  STA $67
  20. .$1457  [60      ]  RTS
  21.  
  22. ;*****************************************************************************
  23. ;*  GET THE ╪ AND ┘ PLOTTING INCREMENTS AND THE PIXELS-TO-PLOT COUNT         *
  24. ;*****************************************************************************
  25.  
  26. .$1458  [A5 0C   ]  LDA $0C       ;GET ┴┬╙(─╪)
  27. .$145A  [A4 0D   ]  LDY $0D
  28. .$145C  [20 1A 14]  JSR $141A
  29. .$145F  [85 FA   ]  STA $FA
  30. .$1461  [84 FB   ]  STY $FB
  31.  
  32. .$1463  [A5 10   ]  LDA $10       ;GET ┴┬╙(─┘)
  33. .$1465  [A4 11   ]  LDY $11
  34. .$1467  [20 1A 14]  JSR $141A
  35. .$146A  [85 FC   ]  STA $FC
  36. .$146C  [84 FD   ]  STY $FD
  37.  
  38. .$146E  [A5 FC   ]  LDA $FC       ;COMPARE ┴┬╙(─┘) TO ┴┬╙(─╪)
  39. .$1470  [C5 FA   ]  CMP $FA
  40. .$1472  [A5 FD   ]  LDA $FD
  41. .$1474  [E5 FB   ]  SBC $FB
  42. .$1476  [B0 44   ]  BCS $14BC     ;IF ┴┬╙(─┘) >= ┴┬╙(─╪) THEN BRANCH AHEAD
  43.  
  44. .$1478  [A5 FA   ]  LDA $FA       ;SET PIXELS-TO-PLOT COUNT TO ┴┬╙(─╪)
  45. .$147A  [85 12   ]  STA $12
  46. .$147C  [85 50   ]  STA $50
  47. .$147E  [A5 FB   ]  LDA $FB
  48. .$1480  [85 13   ]  STA $13
  49. .$1482  [85 51   ]  STA $51       ;SET THE NUMERATOR (TOP) TO ─┘ AND THE
  50. .$1484  [A5 FC   ]  LDA $FC       ;  DENOMINATOR (BOTTOM) TO ┴┬╙(─╪)
  51. .$1486  [85 62   ]  STA $62
  52. .$1488  [A5 FD   ]  LDA $FD
  53. .$148A  [85 63   ]  STA $63
  54. .$148C  [A5 11   ]  LDA $11       ;GET THE SIGN OF ─┘ - WILL BE THE SIGN OF DIV
  55. .$148E  [20 31 14]  JSR $1431     ;PERFORM THE SIGNED FRACTIONAL DIVISION
  56. .$1491  [A2 03   ]  LDX #$03      ;STORE THE RESULT IN THE ┘ INCREMENT VALUE
  57. .$1493  [B5 64   ]  LDA $64,X
  58. .$1495  [95 0E   ]  STA $0E,X
  59. .$1497  [CA      ]  DEX
  60. .$1498  [10 F9   ]  BPL $1493
  61. .$149A  [A5 0D   ]  LDA $0D       ;GET THE ╪ INCREMENT
  62. .$149C  [30 0A   ]  BMI $14A8
  63. .$149E  [A9 00   ]  LDA #$00      ;IF ─╪ IS POSITIVE, ╪ INC IS +1
  64. .$14A0  [85 0D   ]  STA $0D       ;  (NOTE THAT ─╪ CANNOT BE 0 HERE SO WE DON'T
  65. .$14A2  [A9 01   ]  LDA #$01      ;   HAVE TO WORRY ABOUT THAT CASE)
  66. .$14A4  [85 0C   ]  STA $0C
  67. .$14A6  [D0 06   ]  BNE $14AE
  68. .$14A8  [A9 FF   ]  LDA #$FF      ;IF ─╪ IS NEGATIVE, ╪ INC IS -1
  69. .$14AA  [85 0D   ]  STA $0D
  70. .$14AC  [85 0C   ]  STA $0C
  71.  
  72. .$14AE  [38      ]  SEC           ;TAKE THE NEGATIVE OF THE NUMBER OF PIXELS
  73. .$14AF  [A9 00   ]  LDA #$00      ;  TO PLOT AND EXIT
  74. .$14B1  [E5 12   ]  SBC $12       ;╔ DON'T REMEMBER EXACTLY WHY ╔ USE THE
  75. .$14B3  [85 12   ]  STA $12       ;  NEGATIVE; THERE IS NOT MUCH OF A SPEED
  76. .$14B5  [A9 00   ]  LDA #$00      ;  IMPROVEMENT.  ╧H WELL, T'IS DONE.
  77. .$14B7  [E5 13   ]  SBC $13
  78. .$14B9  [85 13   ]  STA $13
  79. .$14BB  [60      ]  RTS
  80.  
  81. .$14BC  [A5 FC   ]  LDA $FC       ;SET THE PIXELS-TO-PLOT COUNT TO ┴┬╙(─┘)
  82. .$14BE  [85 12   ]  STA $12
  83. .$14C0  [85 50   ]  STA $50
  84. .$14C2  [A5 FD   ]  LDA $FD
  85. .$14C4  [85 13   ]  STA $13
  86. .$14C6  [85 51   ]  STA $51       ;SET THE NUMERATOR (TOP) TO ─╪ AND THE
  87. .$14C8  [A5 FA   ]  LDA $FA       ;  DENOMINATOR(BOTTOM) TO ┴┬╙(─┘)
  88. .$14CA  [85 62   ]  STA $62
  89. .$14CC  [A5 FB   ]  LDA $FB
  90. .$14CE  [85 63   ]  STA $63
  91. .$14D0  [A5 0D   ]  LDA $0D       ;GET THE SIGN OF ─╪ - WILL BE THE SIGN OF DIV
  92. .$14D2  [20 31 14]  JSR $1431     ;DO THE 32-BIT SIGNED FRACTIONAL DIVISION
  93. .$14D5  [A2 03   ]  LDX #$03      ;STORE THE RESULT IN THE ╪ INCREMENT
  94. .$14D7  [B5 64   ]  LDA $64,X
  95. .$14D9  [95 0A   ]  STA $0A,X
  96. .$14DB  [CA      ]  DEX
  97. .$14DC  [10 F9   ]  BPL $14D7
  98. .$14DE  [4C EA 14]  JMP $14EA     ;JUMP OVER THE NEXT SECTION
  99. ;-------
  100. .$14E1  [2C FF FF]  BIT $FFFF     ;╘HIS SECTION CONTAINED JUNK BEFORE AND ╔
  101. .$14E4  [2C FF FF]  BIT $FFFF     ;  DON'T KNOW HOW IT GOT HERE.  ╔ REPLACED
  102. .$14E7  [2C FF FF]  BIT $FFFF     ;  IT WITH ┬╔╘S AND NOW JUMP OVER IT.
  103. ;-------
  104. .$14EA  [A5 11   ]  LDA $11
  105. .$14EC  [30 0A   ]  BMI $14F8
  106. .$14EE  [A9 00   ]  LDA #$00      ;IF ─┘ IS POSITIVE THEN ┘ INC IS +1
  107. .$14F0  [85 11   ]  STA $11       ;  (WE DO NOT HAVE TO WORRY ABOUT THE CASE
  108. .$14F2  [A9 01   ]  LDA #$01      ;   OF ─┘ BEING ZERO SINCE THEN THE INCREMENT
  109. .$14F4  [85 10   ]  STA $10       ;   WOULD NOT BE IMPORTANT)
  110. .$14F6  [D0 06   ]  BNE $14FE
  111. .$14F8  [A9 FF   ]  LDA #$FF      ;IF ─┘ IS NEGATIVE THEN ┘ INC IS -1
  112. .$14FA  [85 11   ]  STA $11
  113. .$14FC  [85 10   ]  STA $10
  114. .$14FE  [4C AE 14]  JMP $14AE     ;JUMP BACK TO THE EXIT
  115.  
  116. ;*****************************************************************************
  117. ;*  MAIN ROUTINE: DRAW LINE OR SET PIXEL CURSOR POSITION                     *
  118. ;*****************************************************************************
  119.  
  120. .$1501  [B0 07   ]  BCS $150A     ;GOTO DRAW ROUTINE IF .├=1
  121. .$1503  [85 8B   ]  STA $8B       ;STORE X AND Y PIXEL CURSOR COORDINATES
  122. .$1505  [86 8C   ]  STX $8C
  123. .$1507  [84 8D   ]  STY $8D
  124. .$1509  [60      ]  RTS           ;EXIT SET PIXEL CURSOR
  125.  
  126. .$150A  [85 04   ]  STA $04       ;SAVE DRAW-TO COORDINATES
  127. .$150C  [86 05   ]  STX $05
  128. .$150E  [84 08   ]  STY $08
  129. .$1510  [A2 07   ]  LDX #$07      ;CLEAR $0A-$0D AND $0E-$11
  130. .$1512  [A9 00   ]  LDA #$00
  131. .$1514  [95 0A   ]  STA $0A,X
  132. .$1516  [CA      ]  DEX
  133. .$1517  [10 FB   ]  BPL $1514
  134.  
  135. .$1519  [38      ]  SEC           ;GET DX VALUE = ─RAW╘O╪ - ╨IXEL├URSOR╪
  136. .$151A  [A5 04   ]  LDA $04       ;  DX IS AT [$0D $0C . $0B $0A]
  137. .$151C  [E5 8B   ]  SBC $8B
  138. .$151E  [85 0C   ]  STA $0C
  139. .$1520  [A5 05   ]  LDA $05
  140. .$1522  [E5 8C   ]  SBC $8C
  141. .$1524  [85 0D   ]  STA $0D
  142.  
  143. .$1526  [38      ]  SEC           ;GET DY VALUE = ─RAW╘O┘ - ╨IXEL├URSOR┘
  144. .$1527  [A5 08   ]  LDA $08       ;  DY IS AT [$11 $10 . $0F $0E]
  145. .$1529  [E5 8D   ]  SBC $8D
  146. .$152B  [85 10   ]  STA $10
  147. .$152D  [A9 00   ]  LDA #$00
  148. .$152F  [B0 02   ]  BCS $1533
  149. .$1531  [A9 FF   ]  LDA #$FF
  150. .$1533  [85 11   ]  STA $11
  151.  
  152. .$1535  [20 58 14]  JSR $1458     ;CALCULATE THE ╪ AND ┘ PLOTTING INCREMENTS
  153.  
  154. .$1538  [A5 8B   ]  LDA $8B       ;SET THE DRAWING ╪ POSITION TO X+0.5
  155. .$153A  [85 04   ]  STA $04       ;  ╪ IS AT [$05 $04 . $03 $02]
  156. .$153C  [A5 8C   ]  LDA $8C
  157. .$153E  [85 05   ]  STA $05
  158. .$1540  [A9 80   ]  LDA #$80
  159. .$1542  [85 03   ]  STA $03
  160. .$1544  [85 07   ]  STA $07
  161. .$1546  [A9 00   ]  LDA #$00
  162. .$1548  [85 02   ]  STA $02
  163. .$154A  [85 06   ]  STA $06
  164. .$154C  [A5 8D   ]  LDA $8D       ;SET THE DRAWING ┘ POSITION TO Y+0.5
  165. .$154E  [85 08   ]  STA $08       ;  ┘ IS AT [$09 $08 . $07 $06]
  166. .$1550  [A9 00   ]  LDA #$00
  167. .$1552  [85 09   ]  STA $09
  168.  
  169. .$1554  [A5 04   ]  LDA $04       ;GET THE PIXEL ╪ AND ┘ COORDINATES
  170. .$1556  [A6 05   ]  LDX $05
  171. .$1558  [A4 08   ]  LDY $08
  172. .$155A  [20 A8 13]  JSR $13A8     ;PLOT THE PIXEL
  173. .$155D  [A5 12   ]  LDA $12       ;CHECK THE PIXELS-TO-PLOT COUNT FOR ZERO
  174. .$155F  [05 13   ]  ORA $13
  175. .$1561  [F0 3B   ]  BEQ $159E     ;IF NO MORE PIXELS TO PLOT, EXIT LOOP
  176. .$1563  [18      ]  CLC           ;ADD THE ╪ INCREMENT TO THE ╪ COORDINATE
  177. .$1564  [A5 02   ]  LDA $02
  178. .$1566  [65 0A   ]  ADC $0A
  179. .$1568  [85 02   ]  STA $02
  180. .$156A  [A5 03   ]  LDA $03
  181. .$156C  [65 0B   ]  ADC $0B
  182. .$156E  [85 03   ]  STA $03
  183. .$1570  [A5 04   ]  LDA $04
  184. .$1572  [65 0C   ]  ADC $0C
  185. .$1574  [85 04   ]  STA $04
  186. .$1576  [A5 05   ]  LDA $05
  187. .$1578  [65 0D   ]  ADC $0D
  188. .$157A  [85 05   ]  STA $05
  189. .$157C  [18      ]  CLC           ;ADD THE ┘ INCREMENT TO THE ┘ COORDINATE
  190. .$157D  [A5 06   ]  LDA $06
  191. .$157F  [65 0E   ]  ADC $0E
  192. .$1581  [85 06   ]  STA $06
  193. .$1583  [A5 07   ]  LDA $07
  194. .$1585  [65 0F   ]  ADC $0F
  195. .$1587  [85 07   ]  STA $07
  196. .$1589  [A5 08   ]  LDA $08
  197. .$158B  [65 10   ]  ADC $10
  198. .$158D  [85 08   ]  STA $08
  199. .$158F  [A5 09   ]  LDA $09
  200. .$1591  [65 11   ]  ADC $11
  201. .$1593  [85 09   ]  STA $09
  202. .$1595  [E6 12   ]  INC $12       ;INCREMENT THE PIXELS TO PLOT COUNT
  203. .$1597  [D0 BB   ]  BNE $1554     ;  NOTE THAT IT IS STORED AS THE NEGATIVE OF
  204. .$1599  [E6 13   ]  INC $13       ;  THE COUNT
  205. .$159B  [4C 54 15]  JMP $1554     ;REPEAT PLOTTING LOOP
  206.  
  207. .$159E  [A5 04   ]  LDA $04       ;EXIT - SET THE PIXEL CURSOR POSITION TO THE
  208. .$15A0  [A6 05   ]  LDX $05       ;  LAST PIXEL PLOTTED ON THE LINE
  209. .$15A2  [A4 08   ]  LDY $08
  210. .$15A4  [4C 03 15]  JMP $1503
  211.  
  212.